library(stargazer)
library(cjoint)
library(nnet)
library(MNLpred)
library(lfe)

# Conjoint

outcomes <- list(
    "amigos" = c("Q54", "Q76"),
    "pessoas" = c("Q55", "Q77"),
    "diferencas" = c("Q56", "Q78"),
    "minorias" = c("Q57", "Q79"),
    "democracia" = c("Q58", "Q80"),
    "pobres" = c("Q60", "Q82"),
    "migrantes" = c("Q61", "Q83"),
    "manifestacoes" = c("Q64", "Q86"),
    "derrubar" = c("Q65", "Q87"),
    "protestos_migr" = c("Q66", "Q88"),
    "partidos_opoem" = c("Q67", "Q89")
)

baselines <- list(
    "A.empresa.faz.contribuições.para.sua.previdência.ou.aposentadoria?" = "A empresa FAZ contribuições para sua previdência ou aposentadoria",
    "Como.é.organizado.o.horario.de.trabalho?" = "Horário flexivel com férias pagas",
    "Como.são.decididas.as.promoções?" = "Promoções com base na produtividade individual",
    "Quais.são.os.benefícios?" = "Pacotes de saúde em centros médicos e de diagnóstico, pagamento de creches e infantários",
    "Qual.é.o.tipo.de.contrato?" = "Contrato por tempo indeterminado",
    "Quanto.ganha.o.CEO?" = "O CEO ganha 10 vezes o salário médio de um funcionário",
    "Quem.é.o.proprietário.da.empresa?" = "Uma empresa familiar de médio porte"
)

n <- 0
cjoints <- list()

for (response in outcomes) {
    n <- n + 1
    survey <- read.qualtrics("data/qualtrics/brazil/conjoint_brazil_clean.csv",
        responses = response,
        respondentID = "ResponseId"
    )

    survey <- survey[!is.na(survey$selected), ]

    cjoints[[n]] <- amce(selected ~ `A.empresa.faz.contribuições.para.sua.previdência.ou.aposentadoria?` +
        `Como.é.organizado.o.horario.de.trabalho?` +
        `Como.são.decididas.as.promoções?` +
        `Quais.são.os.benefícios?` +
        `Qual.é.o.tipo.de.contrato?` +
        `Quanto.ganha.o.CEO?` +
        `Quem.é.o.proprietário.da.empresa?`,
    respondent.id = "respondent",
    data = survey,
    baselines = baselines
    )
}

n <- 0

cjdfs <- list()

for (c in cjoints) {
    n <- n + 1
    pe_se <- summary(c)$amce[, c(3, 4)]

    zscr <- qnorm(1 - ((1 - .95) / 2))

    colnames(pe_se) <- c(
        attributes(outcomes[n]),
        paste("se", attributes(outcomes[n]), sep = "_")
    )

    pe_se[, paste("ci_length", attributes(outcomes[n]), sep = "_")] <- pe_se[, 2] * zscr

    cjdfs[[n]] <- pe_se
}

cjdfs <- do.call("cbind", cjdfs)

write.csv(cjdfs, "data/qualtrics/brazil/brazil_conjoint_estimates.csv",
    row.names = FALSE
)